package com.ruoyi.common.core.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @TableName sys_task_plan
 */
@Data
@Builder
@TableName(value = "sys_task_plan")
@ApiModel("任务计划表")
@NoArgsConstructor
@AllArgsConstructor
public class SysTaskPlan implements Serializable {

    @TableId(type = IdType.AUTO)
    private Long id;

    @ApiModelProperty("任务计划创建者")
    @NotNull(message = "任务计划创建者id不能为空")
    private Long creatorId;

    @TableField(exist = false)
    @ApiModelProperty("任务计划创建者名称")
    private String creatorName;

    @ApiModelProperty("任务名称")
    private String taskName;

    @ApiModelProperty("任务备注")
    private String remarks;

    @NotNull(message = "任务周期类型id不能为空")
    @ApiModelProperty("周期类型id")
    private Long cycleId;

    @ApiModelProperty("发布时间")
    private Date publishTime;

    @TableField(exist = false)
    @ApiModelProperty("任务计划发布人名称")
    private String publishUserName;

    @ApiModelProperty("发布人id")
    private Long publishUserId;

    @ApiModelProperty("是否完成0：未完成，1：完成")
    private Integer finish;

    @ApiModelProperty("结束时间")
    private Date stopTime;

    @TableField(exist = false)
    @ApiModelProperty("任务计划结束人名称")
    private String stopUserName;

    @ApiModelProperty("结束人id")
    private Long stopUserId;

    @ApiModelProperty("任务计划创建时间")
    private Date createTime;

    @ApiModelProperty("任务计划开始时间")
    private Date startTime;

    @ApiModelProperty("任务计划结束时间")
    private Date endTime;

    @ApiModelProperty("更新任务计划时间")
    private Date updateTime;

    @ApiModelProperty("修改任务者id")
    private Long reviseId;

    @ApiModelProperty("任务状态  0：删除，1：启用")
    private Integer state;

    @NotNull(message = "任务类型不能为空")
    @ApiModelProperty("任务类型  1:河长巡河,2:智慧巡河")
    private Integer type;

    @ApiModelProperty("目标长度")
    private Integer target;

    @ApiModelProperty("1:常规任务 2:非常规任务")
    private Integer taskType;

    @ApiModelProperty("业务进度状态，1：未发布；2：已发布；3：到时停止；4：手动停止")
    private Integer flowpath;

    @TableField(exist = false)
    @ApiModelProperty("计划任务人员集合")
    private List<SysTaskPlanDetail> userList;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
